package org.bopis.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.bopis.form.SendPasswordForm;
import org.bopis.general.Constantes;
import org.bopis.services.db.DAOUsuario;
import org.bopis.services.mail.MailSender;

import com.boole.model.Usuario;

/**
 * Action que envia al usuario un email con el enlace para poder resetear la contraseña de usuario
 * @author i-fernandezmolina
 *
 */
public class SendPasswordAction  extends CustomBaseAction {

	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		//variables
		String asunto = Constantes.EMAIL_ASUNTO_RESET_PASSWORD;
		String mensaje = Constantes.EMAIL_MENSAJE_RESET_PASSWORD;
		String codigoActivacion = null;
		Usuario usuario = null;
		String email = null;
		String pass = null;
		
		//obtenemos el email del usuario al que se le va a resetear la contraseña y los datos asociados al mismo
		email = ((SendPasswordForm)form).getEmail();
		usuario = DAOUsuario.getUsuarioByEmail(email);
		codigoActivacion = usuario.getCodigoActivacion();
		pass = usuario.getPwd();
		
		//preparamos el texto del mail
		mensaje = mensaje.replaceAll("codigoMD5", codigoActivacion);
		mensaje = mensaje.replaceAll("passMD5", pass);
		
		//le enviamos un mail con el enlace para actualizar la password
		MailSender mailSender = new MailSender();
		mailSender.sendEmail(usuario.getEmail(), usuario.getScreenname(), asunto, mensaje);
		
		
		addActionMessage(request, "forgot.pass.email.sent");
		
		return mapping.findForward("Success");
	    
  	}	
}
